﻿#pragma once
//#include <stdio.h>
//#include<stdlib.h>
//#include<assert.h>

////动态顺序表
//
//typedef int SLDataType;
//
//typedef struct SepList
//{
//    SLDataType* arr;  //存储数据的底层结构
//    int size;   //有效数据个数
//    int capacity; //空间的容量
//}SL;
//
//
////初始化和销毁
//void SLInit(SL* ps);
//void SLDestroy(SL* ps);
//void SLPrint(SL* ps);  //保持接口一致 都用传值
//
//// 顺序表的头部/尾部插入
//
//void SLPushBack(SL* ps, SLDataType x);
//void SLPushFront(SL* ps, SLDataType x);
//
//// 顺序表的头部/尾部删除
//void SLPopBack(SL* ps);
//void SLPopFront(SL* ps);
//
//// 指定位置之前插入数据
//// 删除指定位置数据
//void SLInsert(SL* ps, int pos, SLDataType x);
//void SLErase(SL* ps, int pos);

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

//动态顺序表
typedef int SLDataType;

typedef struct SepList
{
	SLDataType* arr; //存储数据底层结构
	int size; //有效数据个数
	int capacity; //空间容量
}SL;




//还要一种方法

//struct SepList
//{
//	SLDataType* arr;
//	int size;
//	int capacity;
//};

typedef struct SepList SL;

//初始化和销毁（为了保证接口一致，最好用传址的方法）
void SLInit(SL* ps);
void SLDestroy(SL* ps);
void SLPrint(SL*ps);

//顺序表的头部/尾部的插入
void SLPushBack(SL* ps, SLDataType x);
void SLPushFront(SL* ps, SLDataType x);

//顺序表的头部/尾部的删除
void SLPopBack(SL* ps);
void SLPopFront(SL* ps);

//指定位置之前插⼊/删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);